package com.sakila.service.impl;

import java.util.ArrayList;
import java.util.List;

import javax.annotation.Resource;

import org.springframework.stereotype.Service;

import com.sakila.dao.InventoryDao;
import com.sakila.dao.StoreDao;
import com.sakila.pojo.Film;
import com.sakila.pojo.Staff;
import com.sakila.pojo.Store;
import com.sakila.pojo.other.Page;
import com.sakila.service.StoreService;
import com.sakila.vo.StoreInventoryVo;

@Service
public class StoreServiceImpl implements StoreService {
	@Resource
	private StoreDao storeDao;
	@Resource
	private InventoryDao inventoryDao; 
	
	public List<Store> findAll() {
		return storeDao.findAll(null);
	}
	
	public List<Store> findAll(Page page) {
		return storeDao.findAll(page);
	}

	@Override
	public List<Store> findByFilm(Integer filmId) {
		Film f = new Film();
		f.setId(filmId);
		return storeDao.findByFilm(f);
	}

	@Override
	public List<StoreInventoryVo> findInventoryByFilm(Integer filmId) {
		Film f = new Film();
		f.setId(filmId);
		List<Store> stores = storeDao.findByFilm(f);
		List<StoreInventoryVo> list = new ArrayList<StoreInventoryVo>();
		for (Store store : stores) {
			StoreInventoryVo siv = new StoreInventoryVo();
			int inventoryCount = inventoryDao.getTotalCountByFilmAndStore(f, store);
			if(inventoryCount == 0) continue;
			
			siv.setTotalInventoryCount(inventoryCount);
			siv.setRentCount(inventoryDao.getRentalCountByFilmAndStore(f, store));
			siv.setStore(store);
			list.add(siv);
		}	
		return list;
	}

	@Override
	public Staff findManager(Store store) {
		return storeDao.findManager(store);
	}
}
